<template>
	<view class="chat-dialog">
		<!-- 聊天消息显示区域 -->
		<view class="contact">{{ contact }}</view>
		<view class="divider"></view>
		<view class="chat-messages">
			<view v-for="(message, index) in messages" :key="index" class="message"
				:class="{'left': message.from === 'other', 'right': message.from === 'user'}">
				{{ message.content }}
			</view>
		</view>
		<!-- 输入框 -->
		<view class="input-box">
			<input v-model="inputText" @confirm="sendMessage" type="text" placeholder="请输入消息" />
			<button @tap="sendMessage">发送</button>
		</view>
	</view>
</template>
<script>
	export default {
		data() {
			return {
				contact: null, // 初始化contact数据为null
				inputText: '', // 输入框文本
				messages: [] // 聊天消息数组
			};
		},
		onLoad(options) {
			// 获取传递过来的参数，并将JSON字符串解析为对象
			this.contact = JSON.parse(options.contact);
		},
		methods: {
			// 发送消息
			sendMessage() {
				if (this.inputText.trim() !== '') {
					this.messages.push({
						from: 'user',
						content: this.inputText
					}); // 将用户发送的消息放在右侧
					this.inputText = ''; // 清空输入框
					this.scrollToBottom(); // 滚动到底部
					this.replyMessage(); // 模拟对方回复消息
				}
			},
			// 模拟对方回复消息
			replyMessage() {
				// 假设对方回复的消息
				setTimeout(() => {
					this.messages.push({
						from: 'other',
						content: '这是对方的回复消息'
					}); // 将对方回复的消息放在左侧
					this.scrollToBottom(); // 滚动到底部
				}, 1000);
			},
			// 滚动聊天消息到底部
			scrollToBottom() {
				// 使用uni-app提供的API进行滚动
				uni.pageScrollTo({
					scrollTop: 9999, // 设置一个足够大的值，确保能滚动到底部
					duration: 300
				});
			}
		}
	};
</script>
<style>
	.contact {
		text-align: center;
	}
	.divider {
		margin-top: 4%;
		height: 2px;
		width: 100%;
		background-color: #868686;
	}
	.chat-dialog {
		display: flex;
		flex-direction: column;
		height: 100vh;
		padding: 10px;
	}
	.chat-messages {
		flex: 1;
		overflow-y: scroll;
	}
	.message {
		margin: 5px;
		padding: 10px;
		border-radius: 10px;
		max-width: 60%;
	}
	.left {
		background-color: #e8f4f8;
		align-self: flex-start;
	}
	.right {
		background-color: #d4e9ea;
		align-self: flex-end;
		margin-left: 40%;
	}
	.input-box {
		display: flex;
		align-items: center;
		padding: 10px;
		margin-bottom: 20%;
	}
	input {
		flex: 1;
		padding: 5px;
		border: 1px solid #ccc;
		border-radius: 5px;
	}
	button {
		margin-left: 10px;
		padding: 5px 10px;
		border: none;
		border-radius: 5px;
		background-color: #007bff;
		color: #fff;
	}
</style>